/*
 * Copyright (C) 2023 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#ifndef INCLUDE_PERFETTO_PUBLIC_PROTOS_TRACE_TRACE_PACKET_PZC_H_
#define INCLUDE_PERFETTO_PUBLIC_PROTOS_TRACE_TRACE_PACKET_PZC_H_

#include <stdbool.h>
#include <stdint.h>

#include "perfetto/public/pb_macros.h"

PERFETTO_PB_MSG_DECL(perfetto_protos_AndroidCameraFrameEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_AndroidCameraSessionStats);
PERFETTO_PB_MSG_DECL(perfetto_protos_AndroidEnergyEstimationBreakdown);
PERFETTO_PB_MSG_DECL(perfetto_protos_AndroidGameInterventionList);
PERFETTO_PB_MSG_DECL(perfetto_protos_AndroidLogPacket);
PERFETTO_PB_MSG_DECL(perfetto_protos_AndroidSystemProperty);
PERFETTO_PB_MSG_DECL(perfetto_protos_BatteryCounters);
PERFETTO_PB_MSG_DECL(perfetto_protos_ChromeBenchmarkMetadata);
PERFETTO_PB_MSG_DECL(perfetto_protos_ChromeEventBundle);
PERFETTO_PB_MSG_DECL(perfetto_protos_ChromeMetadataPacket);
PERFETTO_PB_MSG_DECL(perfetto_protos_ClockSnapshot);
PERFETTO_PB_MSG_DECL(perfetto_protos_CpuInfo);
PERFETTO_PB_MSG_DECL(perfetto_protos_DeobfuscationMapping);
PERFETTO_PB_MSG_DECL(perfetto_protos_EntityStateResidency);
PERFETTO_PB_MSG_DECL(perfetto_protos_ExtensionDescriptor);
PERFETTO_PB_MSG_DECL(perfetto_protos_FrameTimelineEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_FtraceEventBundle);
PERFETTO_PB_MSG_DECL(perfetto_protos_FtraceStats);
PERFETTO_PB_MSG_DECL(perfetto_protos_GpuCounterEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_GpuLog);
PERFETTO_PB_MSG_DECL(perfetto_protos_GpuMemTotalEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_GpuRenderStageEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_GraphicsFrameEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_HeapGraph);
PERFETTO_PB_MSG_DECL(perfetto_protos_InitialDisplayState);
PERFETTO_PB_MSG_DECL(perfetto_protos_InodeFileMap);
PERFETTO_PB_MSG_DECL(perfetto_protos_InternedData);
PERFETTO_PB_MSG_DECL(perfetto_protos_MemoryTrackerSnapshot);
PERFETTO_PB_MSG_DECL(perfetto_protos_ModuleSymbols);
PERFETTO_PB_MSG_DECL(perfetto_protos_NetworkPacketEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_PackagesList);
PERFETTO_PB_MSG_DECL(perfetto_protos_PerfSample);
PERFETTO_PB_MSG_DECL(perfetto_protos_PerfettoMetatrace);
PERFETTO_PB_MSG_DECL(perfetto_protos_PowerRails);
PERFETTO_PB_MSG_DECL(perfetto_protos_ProcessDescriptor);
PERFETTO_PB_MSG_DECL(perfetto_protos_ProcessStats);
PERFETTO_PB_MSG_DECL(perfetto_protos_ProcessTree);
PERFETTO_PB_MSG_DECL(perfetto_protos_ProfilePacket);
PERFETTO_PB_MSG_DECL(perfetto_protos_ProfiledFrameSymbols);
PERFETTO_PB_MSG_DECL(perfetto_protos_SmapsPacket);
PERFETTO_PB_MSG_DECL(perfetto_protos_StatsdAtom);
PERFETTO_PB_MSG_DECL(perfetto_protos_StreamingAllocation);
PERFETTO_PB_MSG_DECL(perfetto_protos_StreamingFree);
PERFETTO_PB_MSG_DECL(perfetto_protos_StreamingProfilePacket);
PERFETTO_PB_MSG_DECL(perfetto_protos_SysStats);
PERFETTO_PB_MSG_DECL(perfetto_protos_SystemInfo);
PERFETTO_PB_MSG_DECL(perfetto_protos_TestEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_ThreadDescriptor);
PERFETTO_PB_MSG_DECL(perfetto_protos_TraceConfig);
PERFETTO_PB_MSG_DECL(perfetto_protos_TracePacketDefaults);
PERFETTO_PB_MSG_DECL(perfetto_protos_TraceStats);
PERFETTO_PB_MSG_DECL(perfetto_protos_TraceUuid);
PERFETTO_PB_MSG_DECL(perfetto_protos_TracingServiceEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_TrackDescriptor);
PERFETTO_PB_MSG_DECL(perfetto_protos_TrackEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_TrackEventRangeOfInterest);
PERFETTO_PB_MSG_DECL(perfetto_protos_TranslationTable);
PERFETTO_PB_MSG_DECL(perfetto_protos_Trigger);
PERFETTO_PB_MSG_DECL(perfetto_protos_UiState);
PERFETTO_PB_MSG_DECL(perfetto_protos_VulkanApiEvent);
PERFETTO_PB_MSG_DECL(perfetto_protos_VulkanMemoryEvent);

PERFETTO_PB_ENUM_IN_MSG(perfetto_protos_TracePacket, SequenceFlags){
    PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TracePacket,
                                  SEQ_UNSPECIFIED) = 0,
    PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TracePacket,
                                  SEQ_INCREMENTAL_STATE_CLEARED) = 1,
    PERFETTO_PB_ENUM_IN_MSG_ENTRY(perfetto_protos_TracePacket,
                                  SEQ_NEEDS_INCREMENTAL_STATE) = 2,
};

PERFETTO_PB_MSG(perfetto_protos_TracePacket);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket, VARINT, uint64_t, timestamp, 8);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  uint32_t,
                  timestamp_clock_id,
                  58);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ProcessTree,
                  process_tree,
                  2);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ProcessStats,
                  process_stats,
                  9);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_InodeFileMap,
                  inode_file_map,
                  4);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ChromeEventBundle,
                  chrome_events,
                  5);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ClockSnapshot,
                  clock_snapshot,
                  6);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_SysStats,
                  sys_stats,
                  7);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TrackEvent,
                  track_event,
                  11);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TraceUuid,
                  trace_uuid,
                  89);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TraceConfig,
                  trace_config,
                  33);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_FtraceStats,
                  ftrace_stats,
                  34);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TraceStats,
                  trace_stats,
                  35);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ProfilePacket,
                  profile_packet,
                  37);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_StreamingAllocation,
                  streaming_allocation,
                  74);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_StreamingFree,
                  streaming_free,
                  75);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_BatteryCounters,
                  battery,
                  38);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_PowerRails,
                  power_rails,
                  40);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_AndroidLogPacket,
                  android_log,
                  39);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_SystemInfo,
                  system_info,
                  45);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_Trigger,
                  trigger,
                  46);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_PackagesList,
                  packages_list,
                  47);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ChromeBenchmarkMetadata,
                  chrome_benchmark_metadata,
                  48);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_PerfettoMetatrace,
                  perfetto_metatrace,
                  49);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ChromeMetadataPacket,
                  chrome_metadata,
                  51);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_GpuCounterEvent,
                  gpu_counter_event,
                  52);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_GpuRenderStageEvent,
                  gpu_render_stage_event,
                  53);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_StreamingProfilePacket,
                  streaming_profile_packet,
                  54);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_HeapGraph,
                  heap_graph,
                  56);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_GraphicsFrameEvent,
                  graphics_frame_event,
                  57);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_VulkanMemoryEvent,
                  vulkan_memory_event,
                  62);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_GpuLog,
                  gpu_log,
                  63);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_VulkanApiEvent,
                  vulkan_api_event,
                  65);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_PerfSample,
                  perf_sample,
                  66);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_CpuInfo,
                  cpu_info,
                  67);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_SmapsPacket,
                  smaps_packet,
                  68);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TracingServiceEvent,
                  service_event,
                  69);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_InitialDisplayState,
                  initial_display_state,
                  70);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_GpuMemTotalEvent,
                  gpu_mem_total_event,
                  71);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_MemoryTrackerSnapshot,
                  memory_tracker_snapshot,
                  73);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_FrameTimelineEvent,
                  frame_timeline_event,
                  76);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_AndroidEnergyEstimationBreakdown,
                  android_energy_estimation_breakdown,
                  77);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_UiState,
                  ui_state,
                  78);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_AndroidCameraFrameEvent,
                  android_camera_frame_event,
                  80);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_AndroidCameraSessionStats,
                  android_camera_session_stats,
                  81);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TranslationTable,
                  translation_table,
                  82);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_AndroidGameInterventionList,
                  android_game_intervention_list,
                  83);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_StatsdAtom,
                  statsd_atom,
                  84);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_AndroidSystemProperty,
                  android_system_property,
                  86);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_EntityStateResidency,
                  entity_state_residency,
                  91);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ProfiledFrameSymbols,
                  profiled_frame_symbols,
                  55);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ModuleSymbols,
                  module_symbols,
                  61);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_DeobfuscationMapping,
                  deobfuscation_mapping,
                  64);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TrackDescriptor,
                  track_descriptor,
                  60);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ProcessDescriptor,
                  process_descriptor,
                  43);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ThreadDescriptor,
                  thread_descriptor,
                  44);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_FtraceEventBundle,
                  ftrace_events,
                  1);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  STRING,
                  const char*,
                  synchronization_marker,
                  36);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  STRING,
                  const char*,
                  compressed_packets,
                  50);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_ExtensionDescriptor,
                  extension_descriptor,
                  72);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_NetworkPacketEvent,
                  network_packet,
                  88);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TrackEventRangeOfInterest,
                  track_event_range_of_interest,
                  90);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TestEvent,
                  for_testing,
                  900);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket, VARINT, int32_t, trusted_uid, 3);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  uint32_t,
                  trusted_packet_sequence_id,
                  10);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  int32_t,
                  trusted_pid,
                  79);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_InternedData,
                  interned_data,
                  12);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  uint32_t,
                  sequence_flags,
                  13);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  bool,
                  incremental_state_cleared,
                  41);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  MSG,
                  perfetto_protos_TracePacketDefaults,
                  trace_packet_defaults,
                  59);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  bool,
                  previous_packet_dropped,
                  42);
PERFETTO_PB_FIELD(perfetto_protos_TracePacket,
                  VARINT,
                  bool,
                  first_packet_on_sequence,
                  87);

#endif  // INCLUDE_PERFETTO_PUBLIC_PROTOS_TRACE_TRACE_PACKET_PZC_H_
